package org.itstack.config;

import org.itstack.OrderLogicFilter;
import org.itstack.OrderEngineConfig;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 决策树配置管理器
 * 动态管理决策树过滤器的注册、注销和更新
 */
public class DecisionTreeConfigManager {
    
    private final Map<String, OrderLogicFilter> logicFilterMap;
    
    public DecisionTreeConfigManager() {
        this.logicFilterMap = new ConcurrentHashMap<>();
        // 初始化默认过滤器
        initializeDefaultFilters();
    }
    
    private void initializeDefaultFilters() {
        // 这里可以初始化一些默认的过滤器
        System.out.println("初始化默认过滤器...");
    }
    
    /**
     * 注册新的过滤器
     * @param key 过滤器键
     * @param filter 过滤器实例
     */
    public void registerFilter(String key, OrderLogicFilter filter) {
        logicFilterMap.put(key, filter);
        System.out.println("注册过滤器: " + key);
    }
    
    /**
     * 注销过滤器
     * @param key 过滤器键
     */
    public void unregisterFilter(String key) {
        OrderLogicFilter removed = logicFilterMap.remove(key);
        if (removed != null) {
            System.out.println("注销过滤器: " + key);
        } else {
            System.out.println("过滤器不存在: " + key);
        }
    }
    
    /**
     * 更新过滤器
     * @param key 过滤器键
     * @param newFilter 新的过滤器实例
     */
    public void updateFilter(String key, OrderLogicFilter newFilter) {
        if (logicFilterMap.containsKey(key)) {
            logicFilterMap.put(key, newFilter);
            System.out.println("更新过滤器: " + key);
        } else {
            System.out.println("过滤器不存在，无法更新: " + key);
        }
    }
    
    /**
     * 获取过滤器
     * @param key 过滤器键
     * @return 过滤器实例
     */
    public OrderLogicFilter getFilter(String key) {
        return logicFilterMap.get(key);
    }
    
    /**
     * 获取所有过滤器
     * @return 过滤器映射
     */
    public Map<String, OrderLogicFilter> getAllFilters() {
        return new ConcurrentHashMap<>(logicFilterMap);
    }
    
    /**
     * 检查过滤器是否存在
     * @param key 过滤器键
     * @return 是否存在
     */
    public boolean hasFilter(String key) {
        return logicFilterMap.containsKey(key);
    }
    
    /**
     * 获取过滤器数量
     * @return 过滤器数量
     */
    public int getFilterCount() {
        return logicFilterMap.size();
    }
    
    /**
     * 清空所有过滤器
     */
    public void clearAllFilters() {
        logicFilterMap.clear();
        System.out.println("所有过滤器已清空");
    }
}
